#define uchar unsigned char
#define uint unsigned int 
struct DHCP_DISCOVER{
    uchar op;
    uchar htype;
    uchar hlen;
    uchar hops;
    uint  xid;
    uchar[2] secs;
    uchar[2] flag;
    uchar[4] ciaddr;
    uchar[4] yiaddr;
    uchar[4] siaddr;
    uchar[4] giaddr;
    uchar[16] chaddr;
    uchar[64] sname;
    uchar[128] file;
    struct DHCP_OPTIONS *options;
};
struct DHCP_OPTIONS{
	uchar type;
	uchar length;
	uchar * value;
}

struct UDP_PACKAGE{
	uchar[2] src_port;
	uchar[2] dest_port,
	uchar[2] lenth;
	uchar[2] checksum;
	struct DHCP_DISCOVER discover;

}
struct IP_PACKAGE{
	uchar ip_and_headlength;
	uchar service_level;
	uchar[2] length;
	uchar[2] label_and_offset;
	uchar    ttl;
	uchar protocal;
	uchar[2] head_checksum;
	uchar[4] src_ip;
	uchar[4] dst_ip;
	struct UDA_PACKAGE udp_discover;
}
struct MAC_PACKAGE{
	uchar[6] dest_mac;
	uchar[6] src_mac;
	uchar[2] type;
	struct IP_PACKAGE ip_udp_discover;
}
